export default {
  lnglatToCartesian3,
  lnglatToCartesian2,
  cartesian3ToLngLat
}

/**
 * 经纬度转笛卡尔坐标
 * @param {*} lng 经度
 * @param {*} lat 纬度
 * @param {*} alt 高度
 * @returns 
 */
function lnglatToCartesian3 (lng, lat, alt = 0) {
  const cartesian3 = Cesium.Cartesian3.fromDegrees(Number(lng), Number(lat), Number(alt))
  return cartesian3
}

/**
 * 笛卡尔坐标转屏幕坐标
 * @param {*} coord 
 * @returns 
 */
function lnglatToCartesian2 (coord = []) {
  const [lng, lat, alt = 0] = coord
  const cartesian3 = lnglatToCartesian3(lng, lat, alt)
  return Cesium.SceneTransforms.wgs84ToWindowCoordinates(this.viewer.scene, cartesian3)
}

/**
 * 笛卡尔坐标转经纬度
 * @param {*} cartesian3 
 * @returns {Array} [longitude, latitude, height]
 */
function cartesian3ToLngLat (cartesian3) {
  const ellipsoid = this.viewer.scene.globe.ellipsoid
  const radians = ellipsoid.cartesianToCartographic(cartesian3)
  const latitude = CesiumMath.toDegrees(radians.latitude) //弧度转度
  const longitude = CesiumMath.toDegrees(radians.longitude)
  const height = radians.height
  return [longitude, latitude, height]
}